Penyerpihan dan penghimpunan semula IPv4

Rencana utama: Penyerpihan IP

Protokol Internet adalah kemudahan dalam seni bina yang membolehkan rangkaian yang berbeza untuk menukar trafik dan menghala trafik di antara satu sama lain. Reka bentuknya menampung rangkaian dengan pelbagai sifat fizikal; ia tidak bergantung pada teknologi penghantaran dasar yang digunakan dalam Lapisan Pautan. Rangkaian Lapisan Pautan yang berlainan rekaan perkakasan biasanya berbeza tidak hanya dari segi kelajuan penghantaran, tapi juga dari segi struktur dan saiz kaedah pembingkaian sahnya, disifatkan oleh unit penghantaran maksimum (MTU). Untuk memenuhi peranan IP menerabas rangkaian, maka perlu dilaksanakan satu mekanisme untuk menyesuaikan ukuran unit penghantaran secara automatik supaya serasi dengan teknologi dasar. Ini memperkenalkan keperluan untuk penyerpihan dari datagram IP. Dalam IPv4, fungsi ini terletak di Lapisan Internet, dan dilakukan pada penghala IPv4, yang dengan demikian hanya memerlukan lapisan ini sebagai yang tertinggi dilaksanakan dalam rekaan mereka.

Sebaliknya, generasi Protokol Internet berikutnya, iaitu IPv6, tidak memerlukan penghala untuk melakukan penyerpihan, sebaliknya, hos harus menentukan MTU laluan sebelum penghantaran dan menghantar datagram penyelaras.

Penyerpihan

Apabila sesebuah peranti menerima sebuah paket IP, ia menyemak alamat destinasi dan menentukan antara muka keluar untuk digunakan.Antara muka ini mempunyai MTU berkaitan yang menentukan saiz data maksimum untuk muatannya.Jika MTU lebih kecil daripada saiz data, maka peranti berkenaan perlu menyerpihkan data terbabit.

Peranti tersebut kemudiannya mensegmenkan data itu menjadi segmen-segmen di mana setiap segmen adalah kurang-dari-atau-sama-dengan MTU kurang saiz header IP (20 bait minimum; 60 bait maksimum).Setiap segmen kemudian dimasukkan ke dalam pakek IPnya sendiri dengan perubahan berikut:

  • Medan jumlah panjang diselaraskan kepada saiz segmen
  • Bendera more fragments (MF) diset untuk semua segmen kecuali yang terakhir, yang diset kepada 0
  • Medan ofset serpihan diset sewajarnya mengikut ofset serpihan berkenaan dalam muatan data asal. Ini diukur dalam unit blok lapan bait.
  • Medan hasil tambah semak pengepala dikira semula.

Sebagai contoh, bagi pengepala IP dengan panjang 20 bait dan 1,500 bai MTU Ethernet, ofset serpihannya adalah : 0, (1480/8) = 185, (2960/8) = 370, (4440/8) = 555, (5920/8) = 740, dsb..

Kalau sesebuah paket menukar protokol lapisan pautan atau MTU berkurang, maka serpihan-serpihan ini akan diserpihkan lagi.

Contohnya, jika muatan data 4,500 bait disisipkan ke dalam sesebuah paket IP tanpa pilihan (menjadikan jumlah panjangnya 4,520 bait) dan dihantarkan menerusi sebuah link dengan MTU 2,500 bait, maka ia akan dipecahkan menjadi dua serpihan:

#Jumlah PanjangSet bendera
More fragments (MF)?
Ofset serpihan
PengepalaData
12500Ya0
202480
22040Tidak310
202020

Sekarang, katakan MTU menurun kepada 1,500 bait. Setiap serpihan akan diceraikan kepada dua setiap satu::

#Jumlah panjangSet bendera
More fragments (MF)?
Ofset serpihan
PengepalaData
11500Ya0
201480
21020Ya185
201000
31500Ya310
201480
4560Tidak495
20540

Tentu sekali, jumlah data telah dipelihara — 1480 + 1000 + 1480 + 540 = 4500 — dan ofset serpihan terakhir (495) * 8 (bait) tambah data — 3960 + 540 = 4500 — juga adalah jumlah panjangnya.

Perhatikan bahawa serpihan 3 dan 4 telah diterbikan daripada serpihan asal 2. Apabila sesebuah peranti harus menyerpihkan serpihan terakhir maka ia harus mensetkan bendera untuk semua serpihan diciptanya kecuali yang akhir (dalam kes ini, serpihan 4). Serpihan akhir diset kepada nilai 0.

Penghimpunan semula

Bila sesebuah penerima mengesan paket IP di mana salah satu daripada yang berikut ini benar:

  • bendera "more fragments" diset
  • medan "fragment offset" bukan sifar

maka penerima mengetahui paket tersebut adalah sebuah serpihan.Penerima kemudian menyimpan data tersebut dengan medan pengenalpastian, ofset serpihan, dan bendera more fragments (MF).Bila penerima menerima sebuah serpihan dengan bendera MF diset 0, maka ia tahu panjang muatan data asal kerana ofset serpihan didarabkan dengan 8 (bait) ditambah dengan panjang data sama dengan saiz muatan data asal.

Dengan contoh di atas, bila penerima menerima serpihan 4 ofset serpihan (495 atau 3960 bait) dan panjang data (540 bait) ditambah bersama-sama menghasilkan 4500 - panjang data asal.

Data dapat dihimpunkan semula dalam susunan yang benar (dengan menggunakan serpihan offset) setelah semua serpihan telah didapatkan dan menghantarnya ke tindanan untuk proses seterusnya.

Rujukan

WikiPedia: IPv4 http://www.3com.com/other/pdfs/infra/corpinfo/en_U... http://www.inetcore.com/project/ipv4ec/index_en.ht... http://technet.microsoft.com/en-us/library/cc77908... http://www.networksorcery.com/enp/protocol/ip.htm http://www.potaroo.net/tools/ipv4/index.html http://www.tndh.net/~tony/ietf/ipv4-pool-combined-... https://d-nb.info/gnd/4588596-5 https://www.apnic.net/community/ecosystem/igf/arti... https://web.archive.org/web/20100608114541/http://... https://web.archive.org/web/20110109025511/http://...